// package cn.wd.user.domain.mapper;
//
// import cn.hutool.core.bean.BeanUtil;
// import cn.hutool.core.collection.CollUtil;
// import cn.hutool.core.util.ObjectUtil;
// import com.baomidou.mybatisplus.core.conditions.Wrapper;
// import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// import com.baomidou.mybatisplus.core.metadata.IPage;
// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//
// import java.io.Serializable;
// import java.util.Collection;
// import java.util.List;
//
// public interface BasePlusMapper<T> extends BaseMapper<T> {
//     /**
//      * 真正的批量插入
//      * @param entityList
//      * @return
//      */
//     int insertBatchSomeColumn(List<T> entityList);
//
//     /**
//      * 根据 ID 查询
//      * @date 2022/11/25 15:11
//      * @param id 参数
//      * @param voClass 参数
//      * @return C
//      */
//     default <C> C selectVoById(Serializable id, Class<C> voClass) {
//         T obj = this.selectById(id);
//         if (ObjectUtil.isNull(obj)) {
//             return null;
//         }
//         return BeanUtil.toBean(obj, voClass);
//     }
//
//     /**
//      * 查询（根据ID 批量查询）
//      * @date 2022/11/25 15:11
//      * @param idList 参数
//      * @param voClass 参数
//      * @return java.util.List<C>
//      */
//     default <C> List<C> selectVoBatchIds(Collection<? extends Serializable> idList, Class<C> voClass) {
//         List<T> list = this.selectBatchIds(idList);
//         if (CollUtil.isEmpty(list)) {
//             return CollUtil.newArrayList();
//         }
//         return BeanUtil.copyToList(list, voClass);
//     }
//
//     /**
//      * 根据 entity 条件，查询一条记录
//      * @date 2022/11/25 15:11
//      * @param wrapper 参数
//      * @param voClass 参数
//      * @return C
//      */
//     default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass) {
//         T obj = this.selectOne(wrapper);
//         if (ObjectUtil.isNull(obj)) {
//             return null;
//         }
//         return BeanUtil.toBean(obj, voClass);
//     }
//
//     /**
//      * 根据 entity 条件，查询全部记录
//      * @date 2022/11/25 15:12
//      * @param wrapper 参数
//      * @param voClass 参数
//      * @return java.util.List<C>
//      */
//     default <C> List<C> selectVoList(Wrapper<T> wrapper, Class<C> voClass) {
//         List<T> list = this.selectList(wrapper);
//         if (CollUtil.isEmpty(list)) {
//             return CollUtil.newArrayList();
//         }
//         return BeanUtil.copyToList(list, voClass);
//     }
//
//
// //    default <C, P extends IPage<C>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<C> voClass) {
// //        IPage<T> pageData = this.selectPage(page, wrapper);
// //        IPage<C> voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
// //        if (CollUtil.isEmpty(pageData.getRecords())) {
// //            return (P) voPage;
// //        }
// //        voPage.setRecords(BeanUtil.copyToList(pageData.getRecords(), voClass));
// //        return (P) voPage;
// //    }
//
//     /**
//      * 分页查询VO
//      */
//     // default <C> Page<C> selectVoPage(Page page, Wrapper<T> wrapper, Class<C> voClass) {
//     //     Page<C> pageData = new Page<>();
//     //     IPage<C> voPage = new Page<>(pageData.getCurrent(), pageData.getSize(), pageData.getTotal());
//     //     if (CollUtil.isEmpty(pageData.getRecords())) {
//     //         return pageData;
//     //     }
//     //     voPage.setRecords(BeanUtil.copyToList(pageData.getRecords(), voClass));
//     //     return PageVo.build(voPage);
//     // }
//     //
//     // default PageVo<T> selectCustomPage(BasePlusPage page, Wrapper<T> wrapper) {
//     //     IPage<T> pageData = this.selectPage(page.build(), wrapper);
//     //     return PageVo.build(pageData);
//     // }
// }